package com.itheima.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.po.Category;
import com.itheima.po.R;
import com.itheima.service.CatetoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author Andy
 * @Description //TODO CategoryController
 * @Date 2022/3/10 4:05 下午
 * @Version 1.0
 **/

@RestController
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CatetoryService catetoryService;

    @PostMapping("")
    public R<String> save(@RequestBody Category category){
//         1.点击添加菜品或套餐分类功能，根据需求 创建菜品或套餐分类
//     2.手动输入分类名称，排序 操作时间 操作人员等
//     3.后端获取到前端页面发送来的数据
//     4.对刚刚输入的数据进数据库原有数据进行比较  如果重复就告诉前端 此菜品分类已存在如果没有重复  就告诉前端  添加成功
        catetoryService.save(category);
        return R.success("保存成功");
    }

//    *查询
//* 1、根据页面提交信息（页数，条数）
//* 2、querwapper.like  进行模糊查询
//* 3、去数据库进行查询 比较
//* 4、然后通过判断是否存在  没有显示查询失败
//* 5、有相同的进行  的分页 展示

    @GetMapping("/page")
    public R<Page<Category>> page(Integer page, Integer pageSize){
        Page<Category> categoryPage = new Page<>(page, pageSize);
        LambdaQueryWrapper<Category> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.orderByAsc(Category::getSort);
        catetoryService.page(categoryPage, lambdaQueryWrapper);
        return R.success(categoryPage);
    }

//    删除功能：1.写一个删除菜品的语句，接收前端发过来的删除某菜品的删除请求
//                 2.管理者先查询判断菜品数据库中是否已经存在
//                 3.如果不存在，给前端响应一个失败的提示，查询没有此菜品。
//            4.如果数据库中有此菜品就查看数据库中此判断里面需要删除的菜品是否在其他菜品或者套餐中占用
//                 5.如果被占用则不能删除，
//            6.如果此菜品没有在其他菜品或者套餐中使用就在数据库中删除此信息，给前端响应删除成功的信息。

    @DeleteMapping("")
    public R<String> delete(Long id){
        catetoryService.deleteByIdOnNoUse(id);
        return R.success("删除成功");
    }

    @PutMapping()
    public R<String> update(@RequestBody Category category){
        catetoryService.updateById(category);
        return R.success("修改成功");
    }


//    Request URL: http://localhost:8080/category/list?type=1
//Request Method: GET
    @GetMapping("/list")
    public R<List<Category>> list(Integer type){

        LambdaQueryWrapper<Category> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(type != null, Category::getType, type);
        lambdaQueryWrapper.orderByAsc(Category::getSort);
        return R.success(catetoryService.list(lambdaQueryWrapper));
    }
}
